home *** CD-ROM | disk | FTP | other *** search
- ***********************************************************************
- This article is being presented through the *StarBoard* Journal of the
- FlagShip/StarShip SIGs (Special Interest Groups) on Delphi and GEnie
- telecommunication networks. Permission is hereby granted to non-profit
- organizations only to reprint this article or pass it along electronic-
- ally as long as proper credit is given to both the author and the
- *StarBoard* Journal.
- ***********************************************************************
-
- ROM UPDATE INFORMATION
- (from UseNet)
-
- From: cbmvax.cbm!fred (Fred Bowen)
- Subject: Commodore releases new ROMs
- Date: 12 Dec 86 23:13:37 GMT
- To: Commodore users
-
- Following this little commentary are three messages describing
- the changes made to three ROM updates I've recently released
- to the mask shop. If you have a C128, 1571, or one of those
- new 1541C's you should peruse these for your favorite bug. If
- you don't see it, I'll be upset. You should have _reported_ it!
- As I said, they are off to the mask shop, so you won't be able to
- get them for several weeks yet. But it is progress non-the-less,
- and I wanted to try and warm your cockles for the holidays.
- When they become available, I'll be sure to let you know who to
- contact, cost, and so forth, for your very own copies.
-
- Me? I'm gonna warm my cockles beside the Xmas tree, by the
- fireplace, with some 'nog or brandy. If this news didn't do
- anything for you, I suggest you do likewise. Happy holidays.
- --
- Fred Bowen uucp: {ihnp4|seismo|caip}!cbmvax!fred
- tele: 215 431-9100
-
- Commodore Electronics, Ltd., 1200 Wilson Drive, West Chester, PA, 19380
-
-
- From: cbmvax.cbm!fred (Fred Bowen)
- Subject: 1541B ROM update
- Date: 12 Dec 86 23:14:51 GMT
- To: Commodore users
-
-
- 1541B DOS ROM RELEASE NOTES
- Commodore Electronics, LTD. 5 December 1986
-
- 1541B ROM RELEASE NOTES: 251968-02 (16K byte, 300ns, checksum=$1A69)
-
- THE FOLLOWING MODIFICATIONS HAVE BEEN MADE TO THE 251968-01 ROM CODE TO
- CREATE A NEW ROM RELEASED ON 12/05/86. THIS RELEASE IS MADE TO CREATE
- MASKED ROMS FOR PRODUCTION OF THE 1541B/C MODEL DISK DRIVE ONLY.
-
- 1. The interrupt rate change from 15 to 8ms for slightly better
- performance caused compatibility problems with some software
- that used that timing for its own purposes. It is now 15ms.
-
- 2. The 1541B board has troubles accessing tracks beyond 35
- attributable to the new data separator, although the problem
- always existed (wrong bit cell densities because TRKNUM only
- listed up to track 35). TRKNUM has been extended.
-
- 3. SAVE-@ (SAVE with replace) is fixed. The variable NODRV is
- now a 16-bit addressable var, and the STLBUF routine steals
- the buffer locked by drive one.
-
- 4. Relative File fixes (unspecified).
-
- 5. Serial bus (DEVICE NOT PRESENT) fix. TSTATN now clears IRQ.
-
- 6. Block read fix (unspecified).
-
- 7. Write to stack area bug (unspecified).
-
- 8. Set decimal mode (SED) before disabling IRQ (SEI) fixed.
-
- 9. Disk full bug (unspecified).
-
- 10. Add copyright notice for legal types and thieves.
-
- 11. The ROM checksum adjustment byte at $C001 is now $46.
-
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- PLEASE NOTE: THIS ROM WILL _NOT_ WORK IN EARLIER 1541 PCB'S, WHICH
- REQUIRE DIFFERENT SIZED ROMS (8K), AMONG OTHER BOARD DIFFERENCES!
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- --
- Fred Bowen uucp: {ihnp4|seismo|caip}!cbmvax!fred
- tele: 215 431-9100
-
- Commodore Electronics, Ltd., 1200 Wilson Drive, West Chester, PA, 19380
-
-
-
-
- From: cbmvax.cbm!fred (Fred Bowen)
- Subject: 1571 ROM update
- Date: 12 Dec 86 23:15:52 GMT
- To: Commodore users
-
- 1571 DOS ROM RELEASE NOTES
- Commodore Electronics, LTD. 5 December 1986
-
- 1571 ROM RELEASE NOTES: 310654-04 (32K byte, 300ns, checksum=$D8C6)
-
- THE FOLLOWING MODIFICATIONS HAVE BEEN MADE TO THE 310654-03 ROM CODE TO
- CREATE A NEW ROM RELEASED ON 12/05/86. THIS RELEASE IS MADE TO CREATE
- MASKED ROMS FOR PRODUCTION OF THE 1571 (NON-CR) MODEL DISK DRIVE ONLY.
-
- 1. The Set_Overflow flag was not disabled when exiting the 1571
- controller. This is the cause of many seemingly random and
- difficult-to-reproduce problems. This particularly explains
- most of the Relative file problems.
-
- 2. TSTATN caused 'DEVICE NOT PRESENT' errors because the IRQ
- source was never cleared. This has been fixed.
-
- 3. The BAM swap bug. When all the buffers are allocated by the
- application, the DOS frees up the BAM buffer by marking it
- out of memory. When it was reread it would also reread the
- BAM for side one. If the side-1 BAM was 'dirty', it would be
- corrupted. The fix uses a new RAM location, $1B6 for a swap
- flag, and rebuilds the side-1 BAM upon a reread. This
- usually occurs with multiple files open and sectors being
- allocated on both sides of the disk.
-
- 4. Previously BAM allocation on side one would cause the BAM
- image to be written every access. This has been fixed.
-
- 5. SAVE-@ (SAVE with replace) is fixed. The variable NODRV is
- now a 16-bit addressable var, and the STLBUF routine steals
- the buffer locked by drive one. Original 1541 bug.
-
- 6. Previously an active collect in 1541 emulation mode would
- write a zero to the double sided flag in the BAM. This has
- been fixed.
-
- 7. Applications which addressed tracks beyond 35 (on any side)
- previously used incorrect bit cell densities because the
- table TRKNUM only listed up to track 35. The tables TRACKN
- and WORKTABLE replace TRKNUM and WORKTBL, respectively, and
- extend the tables to track 40. Same situation on 1541's.
-
- 8. A 1541 ROM revision changed the variable TIM from $3A to $20
- which resulted in problems for some applications. It is once
- again $3A, like the original (-05) 1541 ROM.
-
- 9. USEDTS returned a 'BLOCK NOT AVAILABLE' status when the
- number of blocks free was equal to 3. This has been fixed.
-
- 10. Previously during a BURST GCR FORMAT the activity led was
- not activated. This has been fixed.
-
- 11. The 1571 BURST LOAD routine would not load 'Locked Files'.
- This has been fixed.
-
- 12. Previously while loading files using the BURST LOAD routine,
- retries were not performed. This has been fixed.
-
- 13. Motor acceleration time for the MFM controller was too long,
- which affected performance when reading and writing in MFM
- format. This has been fixed.
-
- 14. Previously determining whether a diskette was double-sided
- or single-sided GCR would take too long due to valid sync
- pulses found on 'flippy diskettes' and MFM diskettes. This
- has been fixed.
-
- 15. SPINP interrupts from SP (fast serial input) were not
- enabled properly. This has been fixed, but has no affect on
- the operation of the serial bus.
-
- 16. Previously if a copy was performed addressing drive one, the
- error channel would return status '00,OK,00,00'. This has
- been fixed.
-
- 17. Previously the ROM test did not check the first page in ROM
- memory. This has been fixed.
-
- 18. The ROM checksum at $8000 and $8001 is now $23, $C0.
-
- 19. The ROM signature at $C000 is now $D3.
- --
- Fred Bowen uucp: {ihnp4|seismo|caip}!cbmvax!fred
- tele: 215 431-9100
-
- Commodore Electronics, Ltd., 1200 Wilson Drive, West Chester, PA, 19380
-
-
-
-
- From: cbmvax.cbm!fred (Fred Bowen)
- Subject: C128 ROM update
- Date: 12 Dec 86 23:16:58 GMT
- To: Commodore users
-
- C/128 SYSTEM ROM RELEASE NOTES
- Commodore Electronics, LTD. 7 November 1986
-
- C128 ROM RELEASE NOTES: 318018-04, 318019-04, 318020-05
- 318022-02, 318023-02
-
- THE FOLLOWING MODIFICATIONS HAVE BEEN MADE TO THE 318018-02, 318019-02,
- AND 318020-03 CODE TO CREATE A NEW ROM SET RELEASED ON 11/07/86. THIS
- RELEASE IS MADE TO CREATE MASKED ROMS FOR PRODUCTION. THESE ROMS ARE TO
- BE USED AS A SET, REPLACING THE PREVIOUS ROM SET ENTIRELY. THEY ARE NOT
- TO BE MIXED. THIS RELEASE IS MADE SIMULTANEOUSLY IN THE FORM OF 16KB AND
- 32KB ROMS, FOR USE IN THE FOLLOWING SYSTEMS: C128, C128D, C128CR,
- C128DCR, AS APPROPRIATE.
-
- PLEASE NOTE: AN 11/18/85 ENGINEERING RELEASE OF A C128 ROM SET WAS
- NEVER RELEASED TO PRODUCTION, AND ACCOUNTS FOR THE APPARENT JUMP IN ROM
- REVISION NUMBERS. THE FOLLOWING INFORMATION INCLUDES THOSE DIFFERENCES
- AS WELL.
-
- The following information represents a filtered condensation of
- all known problems, complaints, and suggestions that pertain to
- the C/128 system software to date (exclusive of CP/M). The
- current ("original" ROMs) system software consists of:
-
- 1. Part No. 318018-02 --> BASIC LOW ($4000-$7FFF)
-
- 2. Part No. 318019-02 --> BASIC HIGH, MONITOR ($8000-$BFFF)
-
- 3. Part No. 318020-03 --> EDITOR, KERNEL, CP/M ($C000-$FFFF)
-
- 4. Part No. 315078-02 --> DIN ED, KERNEL, CP/M ($C000-$FFFF)
-
- 5. Part No. 318022-01 --> BASIC, MONITOR ($4000-$BFFF)
- (includes 1+2 above)
-
- 6. Part No. 318023-01 --> ED, KERN, CP/M, C64 ($C000-$FFFF)
- (includes 3+4 above)
-
- The updated C/128 16KB ROM set bears the following part numbers. (The
- PCB socket number is valid only for original PCBs).
-
- 1. # 318018-04 --> BASIC LOW ($4000-$7FFF, U33) cksum= 9A40
-
- 2. # 318019-04 --> BASIC HIGH, MONITOR ($8000-$BFFF, U34) cksum= 6F80
-
- 3. # 318020-05 --> EDITOR, KERNEL, CP/M ($C000-$FFFF, U35) cksum= EEC4
-
- 4. # 315078-03 --> DIN ED, KERNEL, CP/M ($C000-$FFFF, U35) cksum= E4C4
-
- 5. # 318022-02 --> BASIC, MONITOR ($4000-$BFFF, U34) cksum= 09C0
-
- 6. # 318023-02 --> EDITOR, KERNEL, CP/M ($C000-$FFFF, U32) cksum= F324
- (Note that #6 above also contains the C/64 ROM code.)
-
- Each 16KB ROM block contains a small patch area for changes, and
- all patches described below have been accomplished such that any
- particular change will never affect more than one ROM. Similarly
- each ROM contains a revision status byte (at $7FFE, $BFFE, and
- $CFFE) which software can test to determine the version of the
- host system. The "original" ROMs contain $00 in these locations
- and the "update" ROMs described herein contain $01. Each ROM
- has had several changes, as summarized on the following pages.
-
- Part Number 318018-04 --> BASIC LOW ($4000-$7FFF)
-
- 1. LIST and DELETE commands. Previously they did not report as
- errors certain non-numeric characters passed as arguments,
- such as 'LIST A'. This has been corrected totally in-line
- by adjusting an erroneous relative branch in the 'RANGE'
- subroutine.
-
- 2. CIRCLE command. Previously an unspecified Y-radius
- defaulted to the X-radius (as it should), but the X-radius
- value had already been scaled for the X-axis and not the
- Y-axis. This has been corrected totally in-line by scaling
- the radii after the defaults have been established.
-
- 3. RS-232 STatus. Previously accessing ST after RS-232 I/O
- resulted in an incorrect status being returned from, and a
- zero written to, location $10A14, possibly corrupting the
- BASIC variable area. This was a result of BASIC calling the
- Kernel routine 'READSS' with the incorrect RAM bank in
- context. This has been corrected totally in-line by
- substituting the correct BASIC subroutine call.
-
- 4. CHAR command. Previously using CHAR with the 80-column text
- screen (GRAPHIC mode 5) resulted in RAM corruption at
- locations $D600 and $D601 of RAM bank 0 (the BASIC text
- bank) due to BASIC calling the Editor PLOT routine without
- the I/O block in context. This has been corrected utilizing
- two patch subroutines.
-
- 5. RENUMBER command. Previously the pass 2 routine, which was
- to pre-scan BASIC text and report 'out of memory' errors
- prior to actually changing anything, was seriously flawed.
- This has been corrected utilizing a patch subroutine.
-
- 6. DELETE command. Previously did not limit-check itself when
- moving down BASIC text, therefore it was possible to crash
- when DELETEing lines at or near the top of memory (near the
- MMU configuration registers). This has been corrected
- utilizing a patch subroutine. Also, DELETE previously
- exited to MAIN via 'JMP', effectively ending the evaluation
- of the current command string. This has been corrected by
- substituting an 'RTS', allowing direct commands like
- 'DELETE 10: PRINT"DELETED LINE 10"' to work correctly.
-
- 7. PLAY command. Previously the SID frequency tables were not
- exactly NTSC concert pitch. Also, there was no provision for
- adjusting the frequency for PAL systems. This has been
- corrected by changing the (NTSC) frequency tables, creating
- new PAL tables, and utilizing patch code to select from the
- appropriate table as determined by the Kernel PAL_NTSC flag.
-
- 8. The BASIC ERROR handler previously failed to clear pending
- string temporaries when an error was TRAPed. This has been
- corrected via patch code to reset TEMPT to TEMPST.
-
- 9. The powerup copyright notice has been updated to 1986, which
- will serve as an immediate visual indication of the ROM
- update status. Also, a new notice has been placed at $7FC0.
-
- 10. The ROM signature at location $7FFC and $7FFD (lo/hi) is
- $8DEF. (new since last release).
-
- 11. The ROM revision byte at location $7FFE, has incremented
- from $00 to $01.
-
- 12. The ROM checksum byte at location $7FFF, has changed from
- $4C to $61.
-
- Part Number 318019-04 --> BASIC HIGH, MONITOR ($8000-$BFFF)
-
- 13. RSPRITE and RSPPOS functions. Previously they accepted as
- parameters sprite numbers in the range 1-16, which is
- incorrect. This has been corrected totally in-line by
- limiting the range check to 1-8, and reporting an illegal
- quantity error for sprite numbers outside this range.
-
- 14. PRINT USING command. Previously there was an anomaly
- involving the use of floating money symbols ('$') and
- commas. The command 'PRINT USING "#,##$.##"; 123.45', for
- example, resulted in the output '$,123.45', which is
- incorrect. This has been fixed utilizing a patch subroutine
- which checks specifically for the '$,' occurrence and
- substitutes a '_$' ('_' = fill character) whenever found.
-
- 15. Relative Coordinates for all graphic commands (except
- MOVSPR) were incorrectly processed. The problem was
- apparent when negative relative coordinates were used, which
- resulted in an illegal quantity error. This has been
- corrected totally in-line by substituting a different
- subroutine call to pre-existing code. This change affects
- the BASIC commands LOCATE, DRAW, PAINT, BOX, CIRCLE, GSHAPE,
- and SSHAPE. This change also allows negative absolute
- coordinates to be accepted (previously they resulted in an
- illegal quantity error), although the legal range remains a
- 16-bit value: 0-65535 (unsigned) or -32768 to 32767
- (signed: i.e., -1 is equivalent to 65535).
-
- 16. DOPEN and APPEND commands. Previously it was possible to
- open two or more disk channels with the same logical file
- number without incurring an error report. This has been
- corrected totally in-line.
-
- 17. MATH package. An original bug fix (ref: double zero bug)
- to the (F)MULT routine has been found to result in small
- errors (such as 2^15 = 32768.0001). This has been corrected
- totally in line by fixing the original (dbl-0) problem in a
- different way.
-
- 18. A copyright notice has been placed, starting at $BFC0.
-
- 19. The ROM signature at location $BFFC and $BFFD (lo/hi) is
- $CDC8. (new since last release).
-
- 20. The ROM revision byte at location $BFFE, has incremented
- from $00 to $01.
-
- 21. The ROM checksum byte at location $BFFF, has changed from
- $3A to $C5.
-
- Part number 318020-05 --> EDITOR, KERNEL, CP/M ($C000-$FFFF)
-
- 22. CAPS LOCK Q. Previously an error in a key matrix decode
- table caused a lower-case 'Q' to be passed when the keyboard
- is in CAPS LOCK mode. The table has been corrected by
- substituting the correct value for upper-case 'Q'.
-
- 23. FUNCTION KEYs. Previously the funcion key handler, part of
- the SCNKEY routine at CKIT2, failed to detect a funtion key
- string pending. This has been corrected via patch routine,
- which will ignore new function key depressions until the
- string in progress has been output (i.e., KYNDX = 0). Also,
- DOPFKY now exits via SCNRTS, instead of simply RTSing.
-
- 24. IOINIT system initialization. Previously the RS-232
- pseudo-6551 registers were not initialized because these
- values are expected to be given by the user whenever RS-232
- channels are OPENed. Apparently many C64 users have taken
- advantage of the fact the C64 'happened' to clear these
- locations and fail to specify critical parameters. These
- RS-232 registers are now initialized to default to: no
- parity, full duplex, 3-line, 1-stop bit, 8-bit words and 300
- baud, via a patch subroutine.
-
- 25. IOINIT PAL system initialization. Adjustments have been
- made to the 8563 initialization values for PAL systems. The
- PAL horizontal total (register 0) changes from $7E to $7F.
- The PAL vertical total (register 4) changes from $27 to $26.
- These changes shift the cycle time from 20.320us to
- 20.032us. The patch required a patch subroutine, as well as
- a change to VDCTBL.
-
- 26. BASIN system call. Previously attempting input from a
- logical channel to the screen (e.g., via INPUT#) resulted in
- line too long errors. This has been corrected utilizing a
- subroutine patch to preserve bit-7 of CRSW, which serves as
- a flag to the Editor that a (pseudo) end-of-line has been
- reached. Also, TBLX is copied to LINTMP to correctly locate
- the current cursor line for the Editor. Please note that
- switching between the 40 and 80-column text screens, opening
- and closing windows, or clearing text screens can confuse
- logical screen channels. The Editor variable LINTMP ($A30)
- is a global, not local, variable as it should have been.
- Users can POKE LINTMP with the logical screen line number
- before INPUT#'s as a work-around.
-
- 27. OPEN RS-232 system call. Previously it was possible to
- receive a carry-set status, normally indicating a error,
- when no error existed after OPENing an RS-232 channel. This
- has been corrected totally in-line by a modification to the
- code which checks for the proper X-line hardware states.
-
- 28. LOAD system call. Previously the normal (a.k.a. SLOW) load
- mechanism did not preserve the starting address of any
- LOADs, which made the BASIC 'BOOT "file"' command form
- malfunction unpredictably. This is apparent only when used
- with 1541 drives. This has been corrected via a patch
- subroutine, which saves the starting address of all LOADed
- files at SAL and SAH, the same place the fast (a.k.a.
- BURST) load mechanism does.
-
- 29. DMA system call. Previously the Kernel forced the I/O block
- into the user's memory configuration at all times, which is
- no longer necessary and, in fact, seriously limits the
- functionality of the RAM expansion cartridge. This has been
- corrected by a ROM patch routine, which affects all Kernel
- DMA system calls as well as the BASIC FETCH, STASH, and SWAP
- commands. Also, previously it was possible for an IRQ to
- occur between the 'arm DMA' and 'trigger DMA' sequences,
- resulting in a DMA operation with the system configuration
- in context regardless of desired configuration. This has
- been corrected by adding 'PHP/SEI...PLP' instructions around
- the JSR to DMA RAM code at $3F0. Applications using the DMA
- RAM code at $3F0 should do likewise. Finally, in this patch
- changes were made to enable DMA operations to all RAM banks
- by correctly using the VIC bank pointer found in the MMU RAM
- configuration register ($D506, VA16=bit-6 and VA17=bit-7).
- Applications using the Kernel routine at $FF50 will inherit
- these changes automatically. Please note that NMI interrupts
- can screw-up DMA operations, as they cannot be masked.
-
- 30. A copyright notice has been placed, starting at $CFC0.
-
- 31. The ROM location $CFF8 is reserved for national character
- ROM checksums. This does not apply to US ROMs, which contain
- $FF here. (new since last release).
-
- 32. The ROM location $CFF9 is now reserved for country codes.
- The US ROMs contain $FF here. (new since last release).
-
- 33. The ROM location $CFFA and $CFFB (lo/hi) contain the
- national character set signature. This does not apply to US
- ROMs, which contain $FFFF here. (new since last release).
-
- 34. The ROM signature at location $CFFC and $CFFD (lo/hi) is
- $8F76. (new since last release).
-
- 35. The ROM revision byte at location $CFFE, has incremented
- from $00 to $01.
-
- 36. The ROM checksum byte at location $CFFF, has changed from
- $C3 to $3C.
-
- 37. The Kernel revision byte at location $FF80 has incremented
- from $00 to $01.
-
- Part number 315078-03 --> DIN ED, KERNEL, CP/M ($C000-$FFFF)
-
- There have been no revisions to the national portions of the
- many national Kernel/Editor ROMs. All revisions described above
- for the US version have also been made to the national versions.
-
- 38. A copyright notice has been placed, starting at $CFC0.
-
- 39. The ROM location $CFF8 is reserved for national character
- ROM checksums. The German/Austrian (DIN) ROMs contain a $FF
- here (that really is the checksum!).
-
- 40. The ROM location $CFF9 is now reserved for country codes.
- The German/Austrian (DIN) ROMs contain $00 here. US ROMs
- contain $FF here.
-
- 41. The ROM location $CFFA and $CFFB (lo/hi) contain the
- national character set signature. The DIN ROMs contain
- $91F3 here. This is unused ($FFFF) for US ROMs.
-
- 42. The ROM signature at location $CFFC and $CFFD (lo/hi) is
- $EA3B.
-
- 43. The ROM revision byte at location $CFFE, has incremented
- from $00 to $01.
-
- 44. The ROM checksum byte at location $CFFF, has changed from
- $C3 to $4C.
-
- 45. The Kernel revision byte at location $FF80 has incremented
- from $00 to $01.
-
- C/128 developer and documentation notes
-
- There were quite a few items that, for one reason or another, I
- categorized as un-fixable as the fix would compromise
- compatibility or be too radical given the work-around or
- relative severity of the problem. They are included here to
- document them along with any implications, work-arounds, etc.
-
- 1. DMA interface. It should also be noted that DMA hardware is
- unreliable at 2MHz clock speeds and consequently the user
- must insure 1MHz (SLOW) mode is used before any DMA
- operations are performed. NMI interrupts will also cause
- problems, and should be disabled or somehow avoided. RS-232
- operations use NMIs; the remote should be XOFFed or the
- channel disabled before DMA operations are performed.
-
- 2. IRQ handler. It is possible for the Kernel IRQ handler to
- perform a keyscan when the IRQ was not the Kernel's. While
- the fix is trivial, I did not include it because it might
- cause problems with existing software which may be taking
- advantage of the unintentional keyscans.
-
- 3. IRQ and NMI handlers. The Kernel forces the system bank
- into context before taking the RAM indirect vectors to the
- actual interrupt handler. Much flexibility can be added to
- the mechanism if the memory bank to be brought into context
- at interrupt time could be read from a variable instead of a
- ROM constant. I am reluctant to include this change because
- the RAM variable would have to be located in a previously
- 'free' location, which may be used by existing applications.
-
- 4. SAVE-to-disk. It is not possible to SAVE the last byte of
- any memory bank (e.g., RAM at $FFFF), because the SAVE
- routine requires you to specify the end of the area to be
- SAVEd as the ending address PLUS ONE ($FFFF+1 -> $0000).
- This is a problem found on all CBM 65xx systems.
-
- 5. SAVE-to-cassette. It is not possible to save the last page
- of any memory bank (e.g., RAM at $FF00-$FFFF) to tape. The
- tape handler hangs with the motor running until the user
- STOPs it. This is a problem found on all CBM 65xx systems
- except the Plus-4.
-
- 6. SAVE and LOAD. While program SAVEs correctly save the
- 16-bit starting address for future LOADs, the existing
- formats do not save the memory bank. This cannot be
- accommodated without the creation of special C128 program
- headers for disk and tape, which is undesirable and
- non-trivial.
-
- 7. STOP/RESET monitor entry. It is not possible to enter the
- Monitor directly via the STOP/RESET sequence from BASIC and
- then eXit back to BASIC without incurring a 'cold' BASIC
- initialization. The alternative, taking the BASIC 'warm'
- start route, would result in a system crash if BASIC had not
- been properly initialized and is therefore not a recommended
- fix. The work-around, assuming BASIC was running before
- STOP/RESET, is for the user to place the value $C1 into
- location $A04 (INITSTATUS) and then eXit.
-
- 8. Monitor 'H' (hunt) command. Because the editor performs
- various translations on data read from the screen, it is not
- possible to Hunt for certain CBM characters, such as pi and
- all reverse-field characters.
-
- 9. BOX command. BOX, because of the particular algorithm
- utilized, has a restricted range of -16384 to +16383
- (unscaled). The algorithm uses parameters that are twice
- those given for calculations and divides down the result
- before plotting. Thus it is possible for very large
- (unscaled) positive coordinates to result in large negative
- plots. The work-around is to use SCALEing, user
- range-checking, or avoid BOX and use either DRAW or CIRCLE
- commands instead.
-
- 10. RDOT, PEN, and RSPPOS functions. These BASIC functions
- return the current pixel cursor, lightpen and sprite
- positions, respectively, but the values they return are
- unSCALEd. Correcting this is trivial, but would result in
- problems for existing applications as well as being
- incompatible with C64 VSP and the PLUS-4.
-
- 11. FNDEF and GRAPHIC modes. After defining a user function,
- anything that results in program relocation must be avoided,
- such as GRAPHIC 'n' or GRAPHIC CLR. There is no fix
- planned. The work-around is a general rule: define GRAPHIC
- screens first (then SCALE), then define functions.
-
- 12. HELP command. HELP does not completely identify two type of
- syntax errors: 'RUN n' where 'n' is an undefined statement,
- and 'XXXX n' where 'XXXX' is any BASIC command which expects
- no argument. In the RUN case, TXTPTR had already been
- reset, but not OLDLIN, thus the correct line is displayed
- but without any highlighting. In the other case, because
- XEQCM exits via CHRGET, TXTPTR is incremented before the
- error is caught, resulting in part of the error not being
- highlighted. The fix would be too complex, especially
- considering the fact that the line containing the error is
- reported, albeit without highlighting.
-
- 13. GETKEY function. In the form 'GETKEY A', this BASIC
- function should wait until a numeric key is pressed, but
- certain non-numeric keys are accepted, such as 'E', colon,
- comma, period, '+', and '-'. The same anomaly occurs with
- 'GET A' for the same reason, as is a known CBM quirk.
-
- 14. PUDEF and PRINT USING commands. There is poor documentation
- of the fact that USING format fields such as "$,###.##", the
- leading '$' or commas are not interpreted per the PUDEFs as
- they are considered not part of the numeric field. This is
- found to occur in all versions of CBM BASIC 3.5 or higher.
-
- 15. RENUMBER command. Because of the routine's use of LINNUM to
- fetch from BASIC text the statement number of an object, it
- is possible to get a 'syntax error' when none existed within
- the RENUMBER command line itself. LINNUM itself reports any
- line numbers it reads that are out of range (>63999).
- Actually, you could use this to 'protect' a program from
- RENUMBERing. Also note that RENUMBER can not renumber line
- ranges. Therefore, LIST and DELETE statements within a
- program are NOT changed nor will they generate any errors.
-
- 16. OUT of MEMORY ERROR. It is possible to hang the system with
- this error from a running program when there is insufficient
- memory to contain the string representation of the original
- line number where the error occurred. One must STOP/RESTORE
- the system and type CLR to recover. This problem is found
- on most CBM 65xx systems.
-
- 17. BASIN ($FFCF) calls return <space><return> to <return> input
- (i.e., null input line). The culprit is an unnecessary BEQ
- test in LOOP4, which was left in for compatibility with the
- C64 and PLUS-4 editors, which behave in a similar manner.
-
- 18. MATH package. The binding of operators is such that unary
- minuses are evaluated after powers. This results in NO error
- when equations of the form (-4^.5) are evaluated (square
- root of a negative number). Of course, the error is given if
- the sign of the number is known when the power is applied
- (eg., X=-4 :PRINT X^.5). This is a known CBM quirk.
-
- 19. BASIC DOS commands, such as DOPEN and APPEND, limit
- filenames to 16 characters maximum. However, when the name
- string includes the filetype, such as "LONGLONGLONGLONG,P",
- BASIC reports a FILENAME TOO LONG error when, in fact, it is
- valid. This is a problem on all CBM systems > DOS 3.0.
-
- 20. DCLOSE accepts both LFN and UNIT parameters simultaneously,
- which it should not (they should be mutually exclusive). The
- LFN is always used, and the UNIT ignored, if both are given.
-
- 21. AUTO command puts next line number into the KEY buffer. It
- should probably just print it. This only causes a problem
- when used with function key strings containing <return>s.
-
- 22. INSERT Editor mode is not canceled by specific ESCAPE
- sequences which move the cursor. For example,
- <INS><INS><INS> <ESC>K <CRSR><CRSR><CRSR> illustrates that
- staying in INSERT mode after moving the cursor to the EOL is
- undesirable.
-
- 23. CIRCLE command in multicolor mode calculates default
- Y-radius based upon twice the X-radius. This is
- undesirable, but maintained to preserve compatibility among
- C64 VSP, PLUS-4, and C128.
-
- 24. TAPEs written in FAST mode are occasionally hard to read in
- SLOW mode. While I would not be surprised by this, I could
- not repeat the problem. The complaint comes from PAL/50Hz
- environments, but that may be the only place tapes are used!
- Users should take care to use tapes only in SLOW (1MHz) mode
- so that the tapes can be read on PETs, 8032s, C64s, etc.
-
- 25. VERIFY and DVERIFY will report 'verify error' when, in fact,
- the programs are identical. This occurs when the LOADed
- version of the BASIC program has been relocated since it was
- SAVEd, usually the result of the GRAPHIC command. In such
- cases, the MSB of line links differ, and (D)VERIFY fails.
- Try GRAPHIC <n|CLR> as appropriate and try again.
- --
- Fred Bowen uucp: {ihnp4|seismo|caip}!cbmvax!fred
- tele: 215 431-9100
-
- Commodore Electronics, Ltd., 1200 Wilson Drive, West Chester, PA, 19380